home *** CD-ROM | disk | FTP | other *** search
- /*
- File: NewDelete.h
-
- Copyright: © 1991-1994 by Apple Computer, Inc.
- All rights reserved.
-
- Part of the AOCE Sample SMSAM Package. Consult the license
- which came with this software for your specific legal rights.
-
- */
-
-
-
- #ifndef __NEWDELETE__
- #define __NEWDELETE__
-
- #ifndef __MEMORY__
- #include "Memory.h"
- #endif
-
- #pragma push
- #pragma segment Main
-
- extern Boolean ValidPtr ( const Ptr );
- extern Boolean ValidHandle ( const Handle );
- extern Boolean DisposeIfPtr ( Ptr );
- extern Boolean DisposeIfHandle ( Handle );
- extern void* operator new ( unsigned int, const void* );
-
- #if defined ( debug ) || defined ( BLJTestTool )
-
- extern void* BLJFailIfNil ( const void* pointer, const char* fileName, unsigned long line );
- extern Ptr AllocatePtr ( unsigned long, Boolean clear = false, Boolean fail = false, const char* file = nil, unsigned long line = 0 );
- extern Handle AllocateHandle ( unsigned long, Boolean clear = false, Boolean fail = false, const char* file = nil, unsigned long line = 0 );
- extern void DeallocatePtr( Ptr );
- extern void DeallocateHandle ( Handle );
-
- #define FAILNewPtr(size) ::AllocatePtr(size,false,true,__FILE__,__LINE__)
- #define FAILNewPtrClear(size) ::AllocatePtr(size,true,true,__FILE__,__LINE__)
- #define FAILNewHandle(size) ::AllocateHandle(size,false,true,__FILE__,__LINE__)
- #define FAILNewHandleClear(size) ::AllocateHandle(size,true,true,__FILE__,__LINE__)
-
- #else
-
- extern void* BLJFailIfNil ( const void* pointer );
- inline Ptr AllocatePtr ( unsigned long size, Boolean clear = false ) { return clear ? ::NewPtrClear(size) : ::NewPtr(size);}
- inline Handle AllocateHandle ( unsigned long size, Boolean clear = false ) { return clear ? ::NewHandleClear(size) : ::NewHandle(size);}
- inline void DeallocatePtr(Ptr p) {::DisposePtr(p);}
- inline void DeallocateHandle(Handle h) {::DisposeHandle(h);}
-
- #define FAILNewPtr(size) ((Ptr)BLJFailIfNil(::NewPtr(size)))
- #define FAILNewPtrClear(size) ((Ptr)BLJFailIfNil(::NewPtrClear(size)))
- #define FAILNewHandle(size) ((Handle)BLJFailIfNil(::NewHandle(size)))
- #define FAILNewHandleClear(size) ((Handle)BLJFailIfNil(::NewHandleClear(size)))
-
- #endif // !(debug || BLJTestTool)
-
- #pragma pop
-
- #endif // __NEWDELETE__
-